package cz.schovjan.proj.service;

import java.util.Date;
import java.util.List;

import cz.schovjan.proj.dto.Band;

/**
 * Rozhrani pro praci s kapelama.
 * @author schovjan
 *
 */
public interface IBand {

	/**
	 * Vraci seznam vsech kapel v systemu.
	 * @return
	 */
	public List<Band> findAll();
	
	/**
	 * Vraci kapelu dle jejiho id.
	 * @param id
	 * @return
	 */
	public Band find(int id);
	
	/**
	 * Pridani kapely do DB.
	 * @param name
	 * @param email
	 * @param description
	 * @param creation
	 * @param breakup
	 */
	public void add(String name, String email, String description, Date creation, Date breakup);

	/**
	 * Smaze kapelu podle jejiho id.
	 * @param id
	 */
	public void delete(int id);

	/**
	 * Ulozi zmeny v kapele.
	 * @param id
	 * @param name
	 * @param email
	 * @param description
	 * @param creation
	 * @param breakup
	 */
	public void save(Integer id, String name, String email, String description,	Date creation, Date breakup);

	/**
	 * Odebere clena z kapely.
	 * @param idB id kapely
	 * @param idM id clena
	 */
	public void removeMember(Integer idB, Integer idM);
	
	/**
	 * Prida clena do kapely.
	 * @param idB
	 * @param idM
	 */
	public void addMember(Integer idB, Integer idM);

	/**
	 * Prida pisen do repertoaru kapely.
	 * @param idB
	 * @param idS
	 */
	public void addSong(Integer idB, Integer idS);

	/**
	 * Odebere pisen z repertoaru kapely.
	 * @param idB
	 * @param idS
	 */
	public void removeSong(Integer idB, Integer idS);

	/**
	 * Pridani koncertu ke kapele.
	 * @param idB
	 * @param idC
	 */
	public void addConcert(Integer idB, Integer idC);
	
	/**
	 * Odebere koncert ze seznamu koncertu kapely.
	 * @param idB
	 * @param idC
	 */
	public void removeConcert(Integer idB, Integer idC);
	
}
